#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMediaPlayer>
#include <QTimer>
#include "calculate.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    void init();
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    //int time1;//定时器1,用来记录游戏时间
    QTimer *timer;
    int result;
    //重置标志 1为重置
    bool resetflag;
    //运算的前一个数
    int countA;
    //运算的后一个数
    int countB;
    //运算的符号
    char countC;
    //记录上一次被按下的按钮
    int preButton;
    //快算24的主功能对象
    Calculate cal;
    //统计是否算出24
    int sum;
    //用户得分
    int scores;
    //判断是否为游客登录
    bool traveler;
    //记录参考答案次数
    int answerTimes;
    //记录刷新次数
    int refreshTimes;
    //播放器
    QMediaPlayer *player;
    //音乐播放开关
    bool musicFlag;
    //视频标志
    bool videoFlag;
    //点击音效
    QMediaPlayer *click;
    //胜利音效
    QMediaPlayer *winPlayer;
    //倒计时音效
    QMediaPlayer *countDown;

signals:
    //给结算窗口传值
    void comToSettlement(int);

private slots:
    /**
     * @brief 倒计时开始的函数
     */
    void timeoutRun();

    /**
     * @brief 接收登录信息
     * @param s1 用户名
     * @param s2 最高得分
     */
    void doProcessLoginRequest(QString s1,QString s2);

    /**
     * @brief 接收是否观看完广告信息
     * @param flag1
     */
    void doProcessAdRequest(bool flag1);

    /**
     * @brief 连接数据库
     * @return 判断是否连接
     */
    bool mysql_init();

    /**
     * @brief 更新数据库用户表中的最高得分数据
     */
    void update_hihgestScore();

    /**
     * @brief 设置按钮消失和打开的函数
     * @param pre 参数是哪一个按钮
     */
    void openOrclose(int pre);

    //以下都为运算按钮
    void on_num1_clicked();

    void on_num2_clicked();

    void on_num3_clicked();

    void on_num4_clicked();

    void on_Btn5_clicked();

    void on_Btn6_clicked();

    void on_Btn7_clicked();

    void on_Btn8_clicked();

    /**
     * @brief 重置函数
     */
    void on_reset_clicked();

    /**
     * @brief 提示函数
     */
    void on_tips_clicked();

    /**
     * @brief 刷新函数
     */
    void on_refresh_clicked();

    /**
     * @brief 游戏技巧函数
     */
    void on_question_clicked();

    /**
     * @brief 音乐开关函数
     */
    void on_btn_music_clicked();

protected:
    /**
     * @brief 用于倒计时延迟的函数
     * @param msec
     */
    void Delay_MSec(int msec);

    /**
     * @brief 判断是否得分的函数
     * @return
     */
    bool judgeWin();

};

#endif // MAINWINDOW_H
